#ifndef RVIZ_PLUGIN_H
#define RVIZ_PLUGIN_H

//所需要包含的头文件
#include <ros/ros.h>
#include <ros/console.h>
#include <rviz/panel.h>   //plugin基类的头文件
#include "serialport/ALL_UAVs_LLA.h"
//msg生成的头文件定义
///应该是sensor_msgs文件夹下有一个JointState.msg文件 生成的这个头文件  使用方式是 a::b  var    var.Num
// *turtlesim_pkg/Num.h 这个路径 
/*525 等待添加自定义文件 先用msgs  Num.h 文件测试一个 Table*/
// #include"tutlesim_pkg/msg/Num.h"
// #include "tutlesim_pkg/msg/geo.h"
// #include "geographic_msgs/GeoPoint.h"
//#include "serialport/ALL_UAVs_LLA.h"
//这是一些GUI的类
class QLabel;
class QLineEdit;

class QPushButton;
class QTextBrowser;
class QToolBox;

namespace rviz_plugin
{
    class Invincible:public rviz::Panel
    {
        Q_OBJECT
    public:
    /*构造函数 在cpp实现中构造UI界面*/
    Invincible(QWidget* parent=0);

    /*功能段：重载rviz::Panel积累中的函数，用于保存、加载配置文件中的数据*/
  virtual void load( const rviz::Config& config );
  virtual void save( rviz::Config config ) const;

    public Q_SLOTS:


    protected Q_SLOTS:

    // void set_topic(const QString& topic);
    void robot_takeoff();
    void robot_off();
   
    protected:

    //一键起飞和一键停止按钮
     QPushButton *push_button_takeoff;
     QPushButton *push_button_off;

     //一些Labels
     QLabel *s1 ;
     QLabel *s2 ;
     QLabel *s3 ;
     QLabel *s4 ;
     QLabel *A ;
     QLabel *L ;
     QLabel *H;
     QLabel *NoneN;

    // // *topic name输入框,控制UR的topic
     QLineEdit* output_topic_editor_;//编辑对象
     QString output_topic_;//编辑的内容文本

     //ROS相关
      ros::NodeHandle nh_;
      // 发布者

    //  订阅者
     ros::Subscriber subscriber_geomsgs;

    //  回调函数
      void msgs_callback(const serialport::ALL_UAVs_LLA& data);
      void  num_to_char (float num,int length,int i);
   



   };
}// end namespace rviz_plugin


#endif 